Software problems frequently crop up even in well-designed applications. One tool that developers use to detect and debug software problems is a trace facility. A trace facility logs information about the operations of software in order to facilitate debugging and diagnostic efforts. The software tracing provides information that is useful for programmers and developers when debugging the software. The tracing is often performed at a low level in the software.
Because tracing is often performed at a low level, it can generate large amounts of data. Having such large amounts of data can generate various problems. It can be difficult for programmers to sift through such large amounts of data in order to find a bug. Saving such large amounts of data can have a negative impact on the lifespan of the trace data; for example, many trace facilities store trace data in a file or data set that wraps when the file is filled. If the trace data is filling the file with irrelevant data, valuable information can be lost when the trace facility starts overwriting earlier data. Valuable trace data can be overwritten with less valuable trace data when the trace facility is logging large numbers of events.
In addition, the trace facility can impact performance in the system when it is writing large amounts of data. A large number of write commands may be generated as the software executes in order to preserve that trace data in the appropriate file or other data structure. These frequent write commands can have a negative impact on how the software performs when the trace facility is active. As a result, a programmer may disable the trace facility at compile time or run time. If an error occurs and the trace facility is turned off, the programmer does not have the benefit of the trace data in attempting to debug the error. Furthermore, having a trace facility that negatively impacts performance decreases the likelihood that the trace facility can be enabled on software provided to a customer. As a result, the programmer may not have access to what would be valuable information about errors occurring during actual operation of the software by the customers.